package com.test.clyq.service;

import java.util.List;

import com.test.clyq.entity.Category;
import com.test.clyq.entity.Users;
import com.test.util.Pagination;

/**
 * CategoryService. <br>
 * 栏目信息管理.
 * <p>
 * Copyright: Copyright (c) 2010-4-17 下午04:39:55
 * <p>
 * Company: 北京宽连十方数字技术有限公司
 * <p>
 * Author: liuxl@c-platform.com
 * <p>
 * Version: 1.0
 * <p>
 */
public interface CategoryService {

	/**
	 * 新增栏目信息
	 * 
	 * @param category
	 *            栏目实例
	 * @param user
	 *            用户实例
	 */
	public void addCategory(Category category, Users user);

	/**
	 * 获得栏目列表（分页使用）
	 * 
	 * @return 栏目信息列表结果集合
	 */
	public List<Category> categoryList(Pagination pagination);

	/**
	 * 根据栏目ID删除栏目
	 * 
	 * @param id
	 *            栏目ID
	 * @param user
	 *            用户实例
	 * @return true or false
	 */
	public boolean delCategoryById(Long id, Users user);

	/**
	 * 根据栏目id获得栏目信息
	 * 
	 * @param id
	 *            栏目ID
	 * @return NLCategory 栏目实体
	 */
	public Category getCategoryById(Long id);

	/**
	 * 获得父栏目下属的所有子栏目列表(包括其本身)
	 * 
	 * @param id
	 *            parentId
	 * @return 栏目信息列表结果集合
	 */
	public List<Category> getCategoryListAllByParentId(Long parentId);

	/**
	 * 获得父栏目下属的所有子栏目列表
	 * 
	 * @param id
	 *            parentId
	 * @return 栏目信息列表结果集合
	 */
	public List<Category> getCategoryListByParentId(Long parentId);

	/**
	 * 获得父栏目下属的所有子栏目列表
	 * 
	 * @param id
	 *            parentId
	 * @return 栏目信息列表结果集合
	 */
	public List<Category> getCategoryListByParentId(Long parentId, String isPublic, String type);

	/**
	 * 获得栏目信息列表
	 * 
	 * @return 栏目信息列表结果集合
	 */
	public List<Category> getCategorys();

	/**
	 * 根据所属网站获取栏目列表
	 * 
	 * @param website
	 *            网站id
	 * @return 栏目信息列表结果集合
	 */
	public List<Category> getCategorys(Integer website);

	/**
	 * 根据站点获得根栏目下属的所有一级子栏目列表
	 * 
	 * @param website
	 *            站点id
	 * @param pagination
	 * @return
	 */
	public List<Category> getFirstLevelCategoryList(Integer website, Pagination pagination);

	/**
	 * 获得根栏目下属的所有一级子栏目列表
	 * 
	 * @return 栏目信息列表结果集合
	 */
	public List<Category> getFirstLevelCategoryList(Pagination pagination);

	/**
	 * 获取可定制的栏目
	 * 
	 * @return
	 */
	public List<Category> getPublicCategorys();

	/**
	 * 根据 子栏目id 获取 父栏目集合
	 * 
	 * @param cId
	 * @return
	 */
	public List<Category> getTreeList(Long cId);

	/**
	 * 保存或更新栏目信息
	 * 
	 * @param category
	 *            栏目实例
	 * @param user
	 *            用户实例
	 */
	public void saveOrUpdate(Category category, Users user);
}
